Podstawowe pojęcia i narzędzia informatyki

Opis zajęć i zasad

Zajęcia 5

Polecenia powłoki dla systemu Linux

Zaloguj się do systemu podając nazwę użytkownika i hasło. Uruchom emulator terminala :

Ikonka lewy dół ekranu -> SystemTools -> konsole

ls

Komenda ls służy do wyświetlania zawartości katalogu

Wpisz komendę ls (ang. list):

ls

Wykorzystaj przełączniki, porównaj efekty wykonania następujących komend:

ls
ls -l
ls -a
ls -l -a
ls -a -l
ls -la
ls -al

Zastosuj nazwy uogólnione w odwołaniach do plików, stosując znaki specjalne:

* - dowolny ciąg znaków,

? - pojedynczy znak,

[] - pojedynczy znak ze wskazanego zbioru.

W celu wykonania ćwiczenia utwórz komendą touch puste pliki o różnych nazwach:

touch a.txt b.txt c.txt
touch a.dat b.dat ab.dat
ls *.txt
ls a*
ls *.*
ls *
ls [ab].txt
ls ?.dat
ls *.???

Podstawowe przełączniki:

-l : podaje więcej informacji o plikach (typ, prawa, liczbę dowiązań, rozmiar, właściciela i grupę, datę modyfikacji i nazwę)

-a : wyświetla również pliki ukryte

-d : wymusza traktowanie ścieżki jako katalog (np. pokazuje prawa do samego katalogu zamiast wyświetlać jego zawartość)

-t : sortuje wyświetlane pozycje wg daty modyfikacji

pwd

Sprawdź nazwę katalogu bieżącego komendą pwd (ang. print working directory).

pwd

cd

Zmień bieżący katalog komendą cd (ang. change directory), wykonaj serię komend i sprawdź ich działanie:

cd /
cd /usr
cd local
cd bin
cd ..
cd man
cd .
cd

Wykonaj komendę ls stosując zarówno przełączniki jak i argumenty:

ls -l /usr
ls -l -a /tmp
ls -l

Pomoc systemowa man

Przywołaj pomoc systemową opisującą komendę ls:

man ls

Znajdziesz tam opis działania, argumentów i przełączników stosowanych z daną komendą. Zapoznaj się z podstawowymi komendami sterującymi przeglądarką pomocy systemowej:

q - wyjście,

Enter, j, k - przewijanie liniami,

Spacja, Ctrl–f, Ctrl–b, Ctrl–d, Ctrl–u - przewijanie stronami,

g, G - przejście na początek/koniec pliku,

/ - rozpoczęcie wyszukiwania tekstu,

n, N - przejście do następnego/poprzedniego wystąpienia słowa

d - przewinięcie o pół ekranu w dół

u - przesunięcie o pół ekranu w górę

Terminal

  • Przećwicz mechanizm przywoływania i edycji ostatnio wykonywanych komend stosując klawisze kursorów góra i dół.

  • Wyświetl historię ostatnio wykonywanych poleceń komendą history.

  • Przećwicz interaktywne przeszukiwanie ostatnio wykonywanych poleceń dostępne po wciśnięciu kombinacji Ctrl–r.

  • Przećwicz mechanizm automatycznego uzupełniania nazw programów i plików za pomocą Tab:

    Wpisz mk Tab Tab d Tab

    Wpisz ls m Tab

  • Przećwicz przewijanie zawartości okna terminala kombinacjami Shift–PgUp, Shift–PgDn, Shift–ArrowUp, Shift–ArrowDown

  • Przetestuj odświeżenie ekranu kombinacją Ctrl–l i komendą clear.

  • Przetestuj zamykanie konsoli poprzez Ctrl–d.

Katalogi i pliki

mkdir / rmdir

Utwórz przykładowe podkatalogi w swoim katalogu domowym:

mkdir x1
mkdir x2 x3
mkdir -p x1/x4/x5

Co robi przełącznik -p ?? Wyświetl strukturę katalogów korzystając z komend

ls
tree
ls -lR

Usuń katalogi komendą

rmdir
rmdir x1
rmdir -p x2

Utwórz przykładowe pliki komendą touch (tworzy pusty plik) lub dowolnym edytorem

touch a.txt
touch b.csv c.dat

cp / rm / mv

Przetestuj komendę cp (ang. copy) służącą do kopiowania katalogów:

cp a.txt b.txt
cp -i a.txt b.txt
cp a.txt b.txt x1/
cp a.txt x1/d.txt
cp *.txt x2/
cp -v *.txt x2/

Zwróć uwagę na zastosowanie i funkcje przełączników.

Sprawdź jak zachowa się polecenie

cp a.txt ab
W przypadku gdy:
  1. ab nie istnieje,

  2. ab jest plikiem zwykłym,

  3. ab jest katalogiem.

Przećwicz usuwanie plików komendą rm (ang. remove)

rm a.txt b.txt
rm *.txt
rm -i *.txt

Komenda rm umożliwia również usuwanie całych struktur katalogów, łącznie z plikami znajdującymi się w środku:

rm -r x1/

Sprawdź co powoduje przełącznik -f komendy rm (man rm).

Przećwicz kopiowanie całych struktur katalogowych:

cp -r x1/ x5

Sprawdź działanie komendy w przypadku, gdy

  1. x nie istnieje

  2. x jest katalogiem.

Sprawdź działanie przełączników -T i -t komendy cp

Zmień nazwę wybranego pliku:

mv a.txt e.txt

Zmień lokalizację pliku:

mv a.txt x2

Wykonaj te akcje jednocześnie

mv a.txt x2/e.txt

Sprawdź działanie przełączników -v, -i, -t, -T w przypadku komendy mv. Sprawdź działanie komendy mv w odniesieniu do katalogów:

mv x1/ x2/
mv x2/ ac
cd x3
mv a.txt ..
mv ../a.txt .

cat

Wyświetla zawartość pliku.

touch a.txt
printf "abc\n" > a.txt
cat a.txt

Kompilacja

Proces kompilacji programu w języku C składa się zwykle z czterech etapów:

  1. Prekompilacja (preprocessing). W czasie tego etapu przetwarzane są instrukcje preprocesora związane z dołączaniem plików, kompilacją warunkową czy makrami.

  2. Kompilacja (compilation). W czasie tego etapu kod przetworzony przez preprocesor jest przekształcany na kod źródłowy w języku assemblera.

  3. Assemblacja (assembly). W czasie tego etapu tworzone są pliki obiektów, zbudowane z przetworzonego na język maszynowy kodu assemblera.

  4. Linkowanie/konsolidacja (linking). W czasie tego etapu pliki obiektów i bibliotek łączone są tak, że powstaje jeden wykonywalny plik, w którym odwołania do elementów zdefiniowanych w innych plikach obiektów mogą być realizowane.

Zapisz poniższy program jako program.c :

#include <stdio.h>

main()
{
int number;

printf("Enter an integer\n");
scanf("%d",&number);

printf("Integer entered by you is %d\n", number);

return 0;
}

Kompilacja za pomocą kompilatora gcc:

gcc --version #wersja gcc
gcc program.c -o program #kompilacja pliku program.c do pliku wykonywalnego program
./program
gcc program.c -Wall -o program #Jeżeli chcesz, aby kompilator wyświetlał ostrzeżenia w miejscach które uznał za niepewne, użyj opcji -Wall

Ćwiczenie

Zweryfikuj efekt działania kompilatora gcc w poszczególnych etapach kompilacji. W tym celu użyj:

— opcji -c, aby zakończyć działanie kompilatora na procesie assemblacji,

opcji -S, aby zakończyć działanie kompilatora na procesie kompilacji,

— opcji -E, aby zakończyć działanie kompilatora na procesie prekompilacji.

gcc program.c -c -o program.o
gcc program.c -S -o program.s
gcc program.c -E -o program.e

Jak widzisz Linux pozwala kompilować bezpośrednio pliki C. W ogólności powinniśmy jednak korzystać z mechanizmu makefile. Stwórz plik o nazwie makefile i zapisz do niego:

program : program.c
        gcc -o program program.c

Uruchom make wpisując:

make
make #co się stało?
rm program #usun program
make #wykonaj make raz jeszcze
./program

Domyślnie komenda make oczekuje, że plik opisu kompilacji będzie się nazywał Makefile lub makefile. Jeżeli nazywa się on inaczej powinniśmy to zadeklarować korzystając z opcji -f.

cp makefile sample.txt
make -f sample.txt

Makefile

Make przydaje się w wielu sytacjach, szczególnie wtedy gdy plik są powiązane złożonymi rekurencyjnymi zależnościami i modyfikacja jednego wymusza zmianę (rekompilację) innych. Poczytaj więcej o tworzeniu i składni plików makefile na:

http://wazniak.mimuw.edu.pl/index.php?title=%C5%9Arodowisko_programisty/Automatyzacja_kompilacji_-_make

Zadanie 1

Prześlij w mailu komendy potrzebne do wykonania następujących operacji:

  • przejdź do swojego katalogu domowego

  • utwórz podkatalog o nazwie będącej numerem Twojego indeksu

  • przejdź do utworzonego katalogu

  • zmień nazwę pliku plik.txt na plik2.txt

  • wyświetl wszystkie pliki bieżącego katalogu o rozszerzeniu .txt

  • utwórz we wcześniej utworzonym katalogu podkatalog o nazwię będącym Twoim nazwiskiem

  • skopiuj plik plik2.txt do nowo utworzonego podkatalogu

  • przejdź do katalogu domowego

  • usuń (za pomocą jednego polecenia) katalog o nazwie będącej numerem Twojego indeksu (utworzony na początku) wraz z całą zawartością

Zadanie 2

Odpowiedz na pytanie do czego służą polecenia od, grep, tr (wykorzystaj man).

Zadanie 3

Dla wybranego problemu ze sprawdzarki (acm.edu.pl) stwórz plik makefile, który będzie: kompilował kod w dwóch turach (najpierw do plików obiektów .o a potem do pliku wykonywalnego), testował, czy dla przykładowego testu otrzymujemy poprawne odpowiedzi, oraz posiadał regułę clean czyszczącą plik .o. W przypadku testowania możesz wykorzystać jako pomoc materiały z:

http://www.cs.toronto.edu/~penny/teaching/csc444-05f/maketutorial.html

Prześlij jako odpowiedź w mailu powstały plik makefile.

Termin wykonania zadań: Sobota 5(9 lub 12).12.2015 do godziny 24.00. Proszę o przesłanie rozwiązań mailem . W temacie powinien znajdować się numer indeksu i słowo DNIF.